package main
// import(
// 	"fmt"
// )
// func main(){
// 	ch:=make(chan int,3)
// 	ch<-12
// 	ch<-32
// 	ch<-34
// 	a:=<-ch
// 	b:=<-ch
// 	c:=<-ch
// 	fmt.Println(a,b,c)
// 	ch<-233
// 	ch<-789
// 	<-ch
// 	fmt.Printf("val=%v cap=%d len=%d\n",ch,cap(ch),len(ch))
// 	ch1:=ch
// 	ch1<-999
// 	ch1<-888
// 	fmt.Printf("val=%v cap=%d len=%d\n",ch,cap(ch),len(ch))
// 	//channel是引用类型

// 	chann:=make(chan int,10)
// 	for i:=1;i<=10;i++{
// 		chann<- i
// 	}
// 	//close(chann)
// 	fmt.Printf("len=%d \n",len(chann))
// 	for i:=1;i<=10;i++{
// 		fmt.Println(<-chann)
// 	}
// 	//在for range之前需要将channel关闭
// 	close(chann)
// 	fmt.Printf("len=%d \n",len(chann))
// 	for val:=range chann{
// 		fmt.Println("range:",val)
// 	}
// }
import (
	"fmt"
	"time"
	"sync"
)
var wg sync.WaitGroup
func Read(channel chan int){
	defer wg.Done()
	for i:=1;i<=10;i++{
		channel<-i
		fmt.Printf("放入%d\n",i)
		time.Sleep(time.Millisecond*200)
	}
	close(channel)
}
func Write(channel chan int){
	defer wg.Done()
	for val:=range channel{
		fmt.Printf("取出%d\n",val)
	}
}
func main(){
	channel:=make(chan int,10)
	wg.Add(1)
	go Read(channel)
	wg.Add(1)
	go Write(channel)
	wg.Wait()
	fmt.Printf("程序结束\n")
}